iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Software Development

從身邊神人大大身上學到的那些事系列 第 4

Use-the-index-luke 讀後筆記-1(Index是什麼,以電話簿來舉例)

  • 分享至 

  • xImage
  •  

關於Index(索引),在剛開始接觸資料庫的時候,總是對他濛濛懂懂
知道如果用了他,搜尋速度就會變快
知道他有用到b+tree,但卻不知道他是怎麼用的
所以想藉著這個筆記,來稍微介紹Index在資料庫中到底是什麼樣的存在

首先,資料庫中的Index,就跟書中的Index的用法是雷同的,用意都是透過有系統的編排,來讓使用者更快的找到資料
而在資料庫中,這個Index的有系統的編排,最常見的就是由小排到大(asc/desc)的做法來排
接下來,在書中,Index是擷取整本書的標題然後印在同一個區域
在資料庫中,Index也是做一樣的內容,Index會將選定的欄位資料存在另一個地方提供資料庫做快速搜尋

所以當你有需要針對單一個欄位來進行搜尋,比如
Table user

Column Name Data Type Index
id int
name varchar
phone varchar Index1

user裡面有三筆資料

id name phone diskAddress
1 user1 0912333555 0x12345
3 user3 0912345678 0x56789
5 user5 0908070605 0x13579

Index1裡面會是

phone diskAddress
0908070605 0x13579
0912333555 0x12345
0912345678 0x56789

此時,如果我想要找一個使用者,他的電話號碼是"0912345678"

select * from user where phone = '0912345678';

這時候資料庫的行為會是

  1. 到Index1裡面找到phone是0912345678,並把這行資料找出來
  2. 看到 * 需要把這個user的所有欄位印出來,所以到0x56789把 3 user3 0912345678取出來
  3. 最後回傳給使用者

這大致是Index的運作方式

Ref: https://use-the-index-luke.com/sql/anatomy


上一篇
覺得很棒的後端學習資源-2
下一篇
Use-the-index-luke 讀後筆記-2(where篇)
系列文
從身邊神人大大身上學到的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言